package datastructure.bplustree;

import java.util.ArrayList;
import java.util.List;

/**
 * B+树节点（内部节点/叶子节点）
 * 阶数m：每个节点最多有m个子节点，最多有m-1个关键字
 */
class BPlusTreeNode {
    boolean isLeaf; // 是否为叶子节点
    List<Integer> keys; // 关键字列表（有序）
    List<BPlusTreeNode> children; // 子节点列表（仅内部节点）
    List<String> values; // 值列表（仅叶子节点，与keys一一对应）
    BPlusTreeNode nextLeaf; // 叶子节点的后继指针（用于范围查询）

    // 构造函数
    public BPlusTreeNode(boolean isLeaf, int order) {
        this.isLeaf = isLeaf;
        this.keys = new ArrayList<>(order - 1); // 最多m-1个关键字
        if (!isLeaf) {
            this.children = new ArrayList<>(order); // 最多m个子节点
        } else {
            this.values = new ArrayList<>(order - 1); // 叶子节点存值
            this.nextLeaf = null; // 初始无后继
        }
    }
}